From: Jasper St. Pierre Date: Mon, 29 Aug 2011 23:10:14 +0000 (-0400) Subject: messageTray: Don't try to URL highlight an invisible actor X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~7819 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=b8d9273a7c5d24104a6b113249dd126d9043e213;p=gnome-shell.git messageTray: Don't try to URL highlight an invisible actor https://bugzilla.gnome.org/show_bug.cgi?id=656142 --- diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index 79f91ade1..86fd12324 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -111,12 +111,21 @@ URLHighlighter.prototype = { this.setMarkup(text, allowMarkup); this.actor.connect('button-press-event', Lang.bind(this, function(actor, event) { + // Don't try to URL highlight when invisible. + // The MessageTray doesn't actually hide us, so + // we need to check for paint opacities as well. + if (!actor.visible || actor.get_paint_opacity() == 0) + return false; + // Keep Notification.actor from seeing this and taking // a pointer grab, which would block our button-release-event // handler, if an URL is clicked return this._findUrlAtPos(event) != -1; })); this.actor.connect('button-release-event', Lang.bind(this, function (actor, event) { + if (!actor.visible || actor.get_paint_opacity() == 0) + return false; + let urlId = this._findUrlAtPos(event); if (urlId != -1) { let url = this._urls[urlId].url; @@ -134,6 +143,9 @@ URLHighlighter.prototype = { return false; })); this.actor.connect('motion-event', Lang.bind(this, function(actor, event) { + if (!actor.visible || actor.get_paint_opacity() == 0) + return false; + let urlId = this._findUrlAtPos(event); if (urlId != -1 && !this._cursorChanged) { global.set_cursor(Shell.Cursor.POINTING_HAND); @@ -145,6 +157,9 @@ URLHighlighter.prototype = { return false; })); this.actor.connect('leave-event', Lang.bind(this, function() { + if (!this.actor.visible || this.actor.get_paint_opacity() == 0) + return; + if (this._cursorChanged) { this._cursorChanged = false; global.unset_cursor();